package com.linsy.product.redis.mq.service;

import com.linsy.product.redis.mq.entity.MqDataVO;

public interface RedisMqConsumers<T> {

    /**
     * 内部消费方法，不能实现
     */
    void initConsumers() throws Exception;

    /**
     * 业务消费方法，必须实现
     */
    void consumersMethod(T t);

    /**
     * 处理消息前的操作（可选实现）
     */
    void beforeConsumers(MqDataVO mqDataVO);

    /**
     * 处理消息后的操作（可选实现）
     */
    void afterConsumers(MqDataVO mqDataVO);

    /**
     * 异常处理（可选实现）
     */
    void consumersError(Throwable trowEx);

    /**
     * 类型转换，传过来的是json，字符串或数字的直接使用（必须实现）
     */
    T convert(String json);
}
